home *** CD-ROM | disk | FTP | other *** search
- 10 REM FILE MAINTENANCE
- 20 REM WRITTEN BY KURT BRANDON
- 30 DEFFNDS(R)=(R-INT(R))
- 40 DN=PEEK(186):REM DRIVE ADDRESS
- 50 POKE53281,1:POKE646,0:POKE650,255:RT$=CHR$(13):D$="":S$="":M$="":I$=""
- 60 BF$=" "
- 70 PRINTCHR$(142)"[147]";
- 80 PRINT"[146] [144]ucccccccccccccccccccccccccci"
- 90 PRINT" b FILE MAINTENANCE PROGRAM b"
- 100 PRINT" b b"
- 110 PRINT" b FOR b"
- 120 PRINT" b b"
- 130 PRINT" b LATITUDE & LONGITUDE FILEb"
- 140 PRINT" jffffffffffffffffffffffffffk"
- 150 DIMOP$(300):Z$=CHR$(0)
- 160 FORI=49152TO49703:READA:POKEI,A:NEXT
- 170 DATA169,0,141,35,194,32,175,193,176,79,32,90,192,32,230,192,32
- 180 DATA120,193,32,139,193,32,158,192,32,250,192,173,33,194,208,3,76
- 190 DATA47,192,173,34,194,208,3,76,47,192,32,25,193,32,101,193,176
- 200 DATA3,76,22,192,173,19,194,133,3,173,20,194,133,4,173,35,194
- 210 DATA208,8,32,120,193,32,159,193,176,11,169,0,141,35,194,32,139
- 220 DATA193,76,22,192,96,160,4,177,251,141,18,194,24,165,251,105,5
- 230 DATA133,251,165,252,105,0,133,252,172,18,194,136,240,16,24,165,251
- 240 DATA105,2,133,251,165,252,105,0,133,252,136,208,240,56,165,251,233
- 250 DATA1,133,3,141,19,194,165,252,233,0,133,4,141,20,194,32,0
- 260 DATA226,142,39,194,96,173,21,194,141,23,194,141,25,194,173,22,194
- 270 DATA141,24,194,141,26,194,14,23,194,46,24,194,24,173,23,194,109
- 280 DATA25,194,141,23,194,173,24,194,109,26,194,141,24,194,24,165,3
- 290 DATA105,3,133,3,165,4,105,0,133,4,24,165,3,109,23,194,133
- 300 DATA5,165,4,109,24,194,133,6,96,160,1,177,251,141,27,194,141
- 310 DATA31,194,136,177,251,141,28,194,141,32,194,96,160,0,177,3,141
- 320 DATA33,194,177,5,141,34,194,200,177,3,133,98,177,5,133,100,200
- 330 DATA177,3,133,99,177,5,133,101,96,173,39,194,41,1,201,0,240
- 340 DATA4,32,233,193,96,160,0,177,98,209,100,144,23,208,22,200,204
- 350 DATA34,194,144,10,173,34,194,205,33,194,208,8,240,5,204,33,194
- 360 DATA144,227,96,169,1,141,35,194,32,79,193,96,160,0,177,3,153
- 370 DATA36,194,177,5,145,3,185,36,194,145,5,200,192,3,144,237,96
- 380 DATA206,29,194,208,3,206,30,194,173,30,194,201,255,240,2,24,96
- 390 DATA56,96,78,32,194,110,31,194,173,31,194,141,21,194,173,32,194
- 400 DATA141,22,194,96,56,173,27,194,237,21,194,141,29,194,173,28,194
- 410 DATA237,22,194,141,30,194,96,173,22,194,208,9,173,21,194,201,0
- 420 DATA208,2,56,96,24,96,165,47,164,48,133,251,132,252,32,139,176
- 430 DATA160,0,177,251,197,69,240,9,200,208,247,230,252,208,243,56,96
- 440 DATA200,208,2,230,252,177,251,197,70,208,230,192,0,208,2,198,252
- 450 DATA136,152,24,101,251,133,251,144,2,230,252,24,96,160,0,177,100
- 460 DATA209,98,144,23,208,22,200,204,33,194,144,10,173,33,194,205,34
- 470 DATA194,208,8,240,5,204,34,194,144,227,96,169,1,141,35,194,32
- 480 DATA79,193,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- 490 DATA0,0,0,0,0,0,0,0
- 500 FC$="A"
- 510 OPEN15,DN,15,"I0"
- 520 OPEN8,DN,8,FC$
- 530 RN=1:GOSUB1530
- 540 INPUT#8,MN
- 550 GOSUB1540
- 560 CLOSE8
- 570 PL$=STR$(MN):IFRN=1THENLA=0:LO=0
- 580 PRINT"[147]NUMBER OF FILE RECORDS:";MN
- 590 PRINT"[144]RECORD NUMBER";RN
- 600 PRINT"[144]PLACE: "PL$"[144]"
- 610 Q$="N":IFLA<0THENQ$="S"
- 620 PRINT"LATITUDE: "TAB(11)ABS(LA)TAB(24)Q$;:RV=LA
- 630 GOSUB3200:PRINTTAB(28)""RV$"[144]"
- 640 Q$="W":IFLO<0THENQ$="E"
- 650 PRINT"LONGITUDE: "TAB(11)ABS(LO)TAB(24)Q$;:RV=LO
- 660 GOSUB3200:PRINTTAB(28)""RV$"[144]"
- 670 GOSUB2660
- 680 POKE198,0
- 690 GETA$:IFA$=""THEN690
- 700 IFA$="[196]"THEND$="_":FJ=MN+-RN:GOSUB2660:GOSUB1230:GOSUB2810:GOTO580
- 710 IFA$="S"THENGOSUB1670:GOTO520
- 720 IFA$="+"ANDRN<MNTHENRN=RN+1:GOSUB2810:GOTO580
- 730 IFA$="-"ANDRN>1THENRN=RN-1:GOSUB2810:GOTO580
- 740 IFA$="Q"THENCLOSE8:CLOSE15:LOAD"MENU",DN
- 750 IFNS=1THENNS=0:GOSUB2810:GOTO580
- 760 IFA$="V"THENSV=RN:INPUT"WHAT RECORD NUMBER";RN:GOSUB2810:GOTO580
- 770 IFA$="E"THENGOSUB1780:GOSUB2810:GOTO580
- 780 IFA$<>"C"THEN820
- 790 INPUT"FIRST LETTER";FC$:FC$=LEFT$(FC$,1)
- 800 IFFC$<"A"ORFC$>"Z"THENPRINT"[145][145]":GOTO790
- 810 GOTO520
- 820 IFA$="I"THENI$="_":GOSUB2660:GOSUB2280:GOSUB2810:GOTO580
- 830 GOTO690
- 840 CLOSE8:OPEN8,DN,8,FC$
- 850 PRINT"";
- 860 FORL=2TOMN-1
- 870 PRINT"[145] [157][157][157][157][157]"INT(100*(L/(MN-1)));
- 880 PRINT"% DONE"
- 890 RN=L
- 900 GOSUB1530
- 910 INPUT#8,LV$,A1,O1
- 920 A1$=STR$(A1):O1$=STR$(O1)
- 930 SV$=LV$
- 940 GOSUB1540
- 950 LR=0
- 960 FORN=L+1TOMN
- 970 RN=N
- 980 GOSUB1530
- 990 INPUT#8,PL$,W$,Y$:W=VAL(W$):Y=VAL(Y$)
- 1000 GOSUB1540
- 1010 IFPL$<SV$THENLR=RN:SV$=PL$
- 1020 NEXTN
- 1030 IFLR=0THEN1170
- 1040 RN=LR
- 1050 GOSUB1530
- 1060 INPUT#8,PL$,A2$,O2$:A2=VAL(A2$):O2=VAL(O2$)
- 1070 A2$=STR$(A2):O2$=STR$(O2)
- 1080 GOSUB1540
- 1090 RC$=LV$+RT$+A1$+RT$+O1$
- 1100 PRINT#8,RC$;
- 1110 GOSUB1540
- 1120 RN=L:RC$=""
- 1130 GOSUB1530
- 1140 RC$=PL$+RT$+A2$+RT$+O2$
- 1150 PRINT#8,RC$;
- 1160 GOSUB1540
- 1170 NEXTL
- 1180 S$="":CLOSE8:GOSUB2660:RETURN
- 1190 :
- 1200 :
- 1210 :
- 1220 REM\ DELETE ENTRY SUB
- 1230 CLOSE8
- 1240 PRINT"";
- 1250 IFRN=1THENPRINT"[145]FILE POINTER RECORD![144]":D$="":RETURN
- 1260 OPEN8,DN,8,FC$
- 1270 CR=RN:FORBG=CRTOMN
- 1280 PRINT"[145] [157][157][157][157][157]"INT(100*((BG-CR)/((MN-CR)-(MN=CR))));
- 1290 PRINT"% DONE[144]"
- 1300 RN=BG+1
- 1310 IFRN>MNTHEN1420
- 1320 GOSUB1530:REM CALCULATE POINTER
- 1330 INPUT#8,PL$,LA$,LO$:LA=VAL(LA$):LO=VAL(LO$)
- 1340 GOSUB1550:REM CHK ERR CHAN
- 1350 GOSUB1540:REM POSITION
- 1360 LA$=STR$(LA):LO$=STR$(LO)
- 1370 RC$=PL$+RT$+LA$+RT$+LO$
- 1380 RN=BG
- 1390 GOSUB1530:GOSUB1530
- 1400 PRINT#8,RC$;
- 1410 GOSUB1540
- 1420 NEXT
- 1430 RN=1:MN=MN-1
- 1440 GOSUB1530
- 1450 MN$=STR$(MN):RC$=MN$+RT$
- 1460 PRINT#8,RC$;
- 1470 GOSUB1540
- 1480 D$="":RN=CR:CLOSE8:GOSUB2660:RETURN
- 1490 :
- 1500 :
- 1510 :
- 1520 REM\ POSITION & ERROR SUB
- 1530 RH=INT(RN/256):RL=RN-(256*RH)
- 1540 PRINT#15,"P"+CHR$(96+8)+CHR$(RL)+CHR$(RH)+CHR$(1)
- 1550 INPUT#15,E,E$,A,B
- 1560 IFE=0THENRETURN
- 1570 IFE=50THEN RETURN
- 1580 PRINT"I/O ERROR"
- 1590 PRINT"ERROR NUMBER IS";E,E$
- 1600 PRINT"AT TRACK";A;" SECTOR";B
- 1610 CLOSE8:CLOSE15:END
- 1620 :
- 1630 :
- 1640 :
- 1650 :
- 1660 REM\ SORT FILE RECORDS SUB
- 1670 OP$(0)=Z$:OP$(1)=Z$:FORI=2TO300:OP$(I)="":NEXT
- 1680 OPEN8,DN,8,FC$:RN=1:GOSUB1530:GOSUB1540:INPUT#8,MN
- 1690 FORRN=2TOMN:GOSUB1530:GOSUB1540:INPUT#8,PL$,LA$,LO$
- 1700 OP$(RN)=PL$+RT$+LA$+RT$+LO$:NEXT
- 1710 SYS49152OP$(1),2
- 1720 FORRN=2TOMN:GOSUB1530:GOSUB1540
- 1730 PRINT#8,OP$(RN);:NEXT:CLOSE8:RETURN
- 1740 :
- 1750 :
- 1760 :
- 1770 REM\ EDIT SUB
- 1780 CE=0:BL=10:NL=10:PRINT"[147]PLACE: "PL$
- 1790 Q$="N":IFLA<0THENQ$="S"
- 1800 PRINT"LATITUDE: "TAB(12)LATAB(24)Q$;:RV=LA
- 1810 GOSUB3200:PRINTTAB(28)""RV$"[144]"
- 1820 Q$="W":IFLO<0THENQ$="E"
- 1830 PRINT"LONGITUDE: "TAB(12)LOTAB(24)Q$;:RV=LO
- 1840 GOSUB3200:PRINTTAB(28)""RV$"[144]"
- 1850 PRINT" - RECORD NOW IN FILE -"
- 1860 INPUT"CHANGE PLACE NAME N[157][157][157]";CH$
- 1870 IFCH$<>"N"ANDCH$<>"Y"THENPRINT"[145][145]":GOTO1860
- 1880 IFCH$="N"THENPQ$=PL$:GOSUB3300:GOTO1960
- 1890 CE=1:INPUT"PLACE:";PQ$
- 1900 IFLEN(PQ$)<=30THEN1930
- 1910 PRINT"MORE THAN 30 CHARACTERS":FORI=1TO900:NEXT
- 1920 GOSUB3300:GOTO1890
- 1930 IFLEFT$(PQ$,1)=" "THENPQ$=RIGHT$(PQ$,LEN(PQ$)-1):GOTO1930
- 1940 IFLEN(PQ$)<30THENPQ$=PQ$+LEFT$(BF$,30-LEN(PQ$))
- 1950 GOSUB3300
- 1960 SA=LA:INPUT"CHANGE LATITUDE? N[157][157][157]";CH$
- 1970 IFCH$<>"N"ANDCH$<>"Y"THENPRINT"[145][145]":GOTO1960
- 1980 IFCH$="N"THENGOSUB3300:GOTO2000
- 1990 CE=1:PRINT"LATITUDE":GOSUB2910:IF NV=1THENSA=RV
- 2000 SA$=STR$(SA):SA$=SA$+LEFT$(BF$,11-LEN(SA$))
- 2010 GOSUB3300
- 2020 SO=LO:INPUT"CHANGE LONGITUDE N[157][157][157]";CH$
- 2030 IFCH$<>"N"ANDCH$<>"Y"THENPRINT"[145][145]":GOTO2020
- 2040 IFCH$="N"THENGOSUB3300:GOTO2060
- 2050 CE=1:SO=LO:PRINT"LONGITUDE":GOSUB2910:IF NV=1THENSO=RV
- 2060 SO$=STR$(SO):SO$=SO$+LEFT$(BF$,11-LEN(SO$))
- 2070 PRINT:PRINT:PRINT"PLACE: "PQ$
- 2080 Q$="N":IFVAL(SA$)<0THENQ$="S"
- 2090 PRINT"LATITUDE: "TAB(12)SA$TAB(24)Q$;:RV=VAL(SA$)
- 2100 GOSUB3200:PRINTTAB(28)""RV$"[144]"
- 2110 Q$="W":IFVAL(SO$)<0THENQ$="E"
- 2120 PRINT"LONGITUDE: "TAB(12)SO$TAB(24)Q$;:RV=VAL(SO$)
- 2130 GOSUB3200:PRINTTAB(28)""RV$"[144]"
- 2140 PRINT"[144]-- IS THIS INFORMATION CORRECT (Y/N)? --"
- 2150 GETA$:IFA$<>"Y"ANDA$<>"N"THEN2150
- 2160 IFA$="N"THEN1780
- 2170 IFCE=0THENRETURN
- 2180 RC$=PQ$+RT$+SA$+RT$+SO$
- 2190 OPEN8,DN,8,FC$
- 2200 GOSUB1530
- 2210 PRINT#8,RC$;
- 2220 GOSUB1550:GOSUB1540
- 2230 CLOSE8:RETURN
- 2240 :
- 2250 :
- 2260 :
- 2270 REM\ INSERT RECORD SUB
- 2280 OPEN8,DN,8,FC$
- 2290 TN=RN:FORXD=MNTOTNSTEP-1
- 2300 PRINT"";
- 2310 PRINTINT(100*((MN-XD)/(MN-TN-(MN=TN))))" % DONE"
- 2320 RN=XD
- 2330 GOSUB1530
- 2340 INPUT#8,PL$,LA$,LO$:LA=VAL(LA$):LO=VAL(LO$)
- 2350 GOSUB1550
- 2360 GOSUB1540
- 2370 LA$=STR$(LA):LO$=STR$(LO)
- 2380 RC$=PL$+RT$+LA$+RT$+LO$
- 2390 RN=XD+1
- 2400 GOSUB1530
- 2410 PRINT#8,RC$;
- 2420 GOSUB1550
- 2430 GOSUB1540
- 2440 NEXT
- 2450 MN=MN+1
- 2460 RN=1
- 2470 GOSUB1530
- 2480 MN$=STR$(MN)
- 2490 RC$=MN$+RT$
- 2500 PRINT#8,RC$;
- 2510 GOSUB1550
- 2520 RN=TN
- 2530 PL$=" ":LO=0:LA=0
- 2540 LA$=STR$(LA):LO$=STR$(LO)
- 2550 RC$=PL$+RT$+LA$+RT$+LO$
- 2560 GOSUB1530
- 2570 PRINT#8,RC$;
- 2580 GOSUB1550
- 2590 GOSUB1540
- 2600 CLOSE8
- 2610 I$="":RETURN
- 2620 :
- 2630 :
- 2640 :
- 2650 REM\ MENU DISPLAY SUB
- 2660 PRINT" [196][144] DELETE";D$
- 2670 PRINT" S[144] SORT";S$
- 2680 PRINT" +[144] NEXT RECORD"
- 2690 PRINT" -[144] PREVIOUS RECORD"
- 2700 PRINT" Q[144] QUIT"
- 2710 PRINT" V[144] VIEW SPECIFIC RECORD"
- 2720 PRINT" E[144] EDIT DISPLAYED RECORD"
- 2730 PRINT" I[144] INSERT RECORD"I$
- 2740 PRINT" C[144] SELECT FILE (A-Z)"
- 2750 RETURN
- 2760 :
- 2770 :
- 2780 :
- 2790 :
- 2800 REM\ DATA INPUT SUB
- 2810 OPEN8,DN,8,FC$
- 2820 GOSUB1530:IFE<>50THEN2840
- 2830 RN=SV:PRINT"THIS RECORD IS NOT PRESENT":FORI=1TO2000:NEXT:CLOSE8:RETURN
- 2840 INPUT#8,PL$,LA$,LO$:LA=VAL(LA$):LO=VAL(LO$)
- 2850 GOSUB1540:CLOSE8
- 2860 RETURN
- 2870 :
- 2880 :
- 2890 :
- 2900 REM\ INPUT SUB
- 2910 S$="":CC=0:DP=0:MP=0:SP=0:HM=0:DM=0:SG=1
- 2920 DEFFNVC(X)=(X>=48ANDX<=57)OR(X=78ORX=83ORX=69ORX=87ORX=58ORX=20ORX=13ORCV=46)
- 2930 NV=0
- 2940 FORKI=0TO30
- 2950 IFKI=0THENPRINT" [146][157]";
- 2960 IFKI=15THENPRINT" [157]";
- 2970 GETA$:IFA$<>""THENGOTO2990
- 2980 NEXTKI:GOTO2940
- 2990 CV=ASC(A$):IFFNVC(CV)=0THENGOTO2940
- 3000 IFCV=13ORCV=20THENPRINT" [157]";
- 3010 IFCV<>13ANDCV<>20THENNV=1:CC=CC+1:PRINTA$;:IFCV<>58THENS$=S$+A$
- 3020 IFCC=0THENGOTO3060
- 3030 IFCV<>20THENGOTO3060
- 3040 FORKI=1TOCC:PRINT"[157]";:NEXT:FORKI=1TOCC:PRINT"[160]";:NEXT:FORKI=1TOCC:PRINT"[157]";:NEXT
- 3050 GOTO2910
- 3060 IFCV=58ANDDM=0THENDP=VAL(S$):DM=1:S$="":GOTO2940
- 3070 IFCV=58ANDDM=1THENMP=VAL(S$):DM=2:S$="":GOTO2940
- 3080 IFDM=1ANDCV=13THENMP=VAL(S$):S$="":GOTO3130
- 3090 IFDM=2ANDCV=13THENSP=VAL(S$):S$="":GOTO3130
- 3100 IFCV=78ORCV=87THENSG=1:CV=58:GOTO3060
- 3110 IFCV=83ORCV=69THENSG=-1:CV=58:GOTO3060
- 3120 IFCV=78ORCV=87ORCV=83ORCV=69THENSP=VAL(S$)
- 3130 IFCV=13AND(DM=1ORDM=2)THENRV=(DP+MP/60+SP/3600)*SG:RETURN
- 3140 IFCV=13ANDDM=0THENRV=VAL(S$)*SG:RETURN
- 3150 GOTO2940
- 3160 :
- 3170 :
- 3180 :
- 3190 REM\ DEGREES-MINUTES-SECONDS SUB
- 3200 RV=ABS(RV)
- 3210 DP=INT(RV):MP=60*FNDS(RV):MP=INT(MP+.5):DM=1
- 3220 RV$=STR$(DP)+"[188]"+STR$(MP)+"'":RETURN
- 3230 :
- 3240 :
- 3250 :
- 3260 REM\ PARTIAL SCREEN CLEAR
- 3270 REM KK,KL,KM=STORAGE
- 3280 REM BL=IS BEGINNING LINE NUMBER
- 3290 REM NL=NUMBER OF LINES TO CLEAR
- 3300 KK=PEEK(781):KL=PEEK(782):KM=PEEK(783)
- 3310 FORI=BLTOBL+NL
- 3320 POKE781,I:POKE782,0:POKE783,0
- 3330 SYS65520:SYS59903
- 3340 NEXT
- 3350 POKE781,KK:POKE782,KL:POKE783,KM
- 3360 POKE214,BL:PRINT
- 3370 RETURN
-